#!/bin/bash

# SmartResume-AI 自动化部署脚本
# 适用于CentOS 7.6系统

set -e

echo "🚀 开始部署 SmartResume-AI..."

# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color

# 日志函数
log_info() {
    echo -e "${GREEN}[INFO]${NC} $1"
}

log_warn() {
    echo -e "${YELLOW}[WARN]${NC} $1"
}

log_error() {
    echo -e "${RED}[ERROR]${NC} $1"
}

# 检查是否为root用户
check_root() {
    if [[ $EUID -ne 0 ]]; then
        log_error "请使用root用户运行此脚本"
        exit 1
    fi
}

# 安装Docker
install_docker() {
    log_info "检查Docker安装状态..."
    
    if command -v docker &> /dev/null; then
        log_info "Docker已安装，版本: $(docker --version)"
    else
        log_info "安装Docker..."
        yum update -y
        yum install -y yum-utils device-mapper-persistent-data lvm2
        yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
        yum install -y docker-ce docker-ce-cli containerd.io
        
        # 启动Docker服务
        systemctl start docker
        systemctl enable docker
        
        log_info "Docker安装完成"
    fi
}

# 安装Docker Compose
install_docker_compose() {
    log_info "检查Docker Compose安装状态..."
    
    if command -v docker-compose &> /dev/null; then
        log_info "Docker Compose已安装，版本: $(docker-compose --version)"
    else
        log_info "安装Docker Compose..."
        curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
        chmod +x /usr/local/bin/docker-compose
        ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
        
        log_info "Docker Compose安装完成"
    fi
}

# 配置防火墙
configure_firewall() {
    log_info "配置防火墙规则..."
    
    # 检查firewalld状态
    if systemctl is-active --quiet firewalld; then
        firewall-cmd --permanent --add-port=80/tcp
        firewall-cmd --permanent --add-port=443/tcp
        firewall-cmd --permanent --add-port=8080/tcp
        firewall-cmd --permanent --add-port=5005/tcp
        firewall-cmd --permanent --add-port=8888/tcp
        firewall-cmd --reload
        log_info "防火墙规则配置完成"
    else
        log_warn "firewalld未运行，请手动配置防火墙规则"
    fi
}

# 克隆项目
clone_project() {
    log_info "克隆项目代码..."
    
    PROJECT_DIR="/opt/smartresume-ai"
    
    if [ -d "$PROJECT_DIR" ]; then
        log_info "项目目录已存在，更新代码..."
        cd $PROJECT_DIR
        git pull origin main
    else
        log_info "克隆项目..."
        git clone https://github.com/Miku-da-you/SmartResume-AI.git $PROJECT_DIR
        cd $PROJECT_DIR
    fi
}

# 配置环境变量
setup_environment() {
    log_info "配置环境变量..."
    
    if [ ! -f "ai-server/.env" ]; then
        log_warn "请配置AI服务环境变量："
        echo "1. 复制 ai-server/.env.example 到 ai-server/.env"
        echo "2. 编辑 ai-server/.env 文件，填入您的API密钥"
        echo "3. 配置完成后重新运行部署脚本"
        exit 1
    fi
}

# 构建和启动服务
deploy_services() {
    log_info "构建和启动服务..."
    
    # 停止现有服务
    docker-compose down
    
    # 构建镜像
    docker-compose build --no-cache
    
    # 启动服务
    docker-compose up -d
    
    log_info "等待服务启动..."
    sleep 30
    
    # 检查服务状态
    docker-compose ps
}

# 健康检查
health_check() {
    log_info "执行健康检查..."
    
    # 检查前端服务
    if curl -f http://localhost:8888/health &> /dev/null; then
        log_info "✅ 前端服务正常"
    else
        log_error "❌ 前端服务异常"
    fi
    
    # 检查后端服务
    if curl -f http://localhost:8080/health &> /dev/null; then
        log_info "✅ 后端服务正常"
    else
        log_error "❌ 后端服务异常"
    fi
    
    # 检查AI服务
    if curl -f http://localhost:5005/health &> /dev/null; then
        log_info "✅ AI服务正常"
    else
        log_error "❌ AI服务异常"
    fi
}

# 显示部署信息
show_deployment_info() {
    log_info "🎉 部署完成！"
    echo ""
    echo "📱 访问地址："
    echo "   - 主页面: http://117.72.205.240:8888"
    echo "   - 后端API: http://117.72.205.240:8080"
    echo "   - AI服务: http://117.72.205.240:5005"
    echo ""
    echo "🔧 管理命令："
    echo "   - 查看服务状态: docker-compose ps"
    echo "   - 查看日志: docker-compose logs -f [service_name]"
    echo "   - 重启服务: docker-compose restart"
    echo "   - 停止服务: docker-compose down"
    echo ""
    echo "📁 项目目录: /opt/smartresume-ai"
}

# 主函数
main() {
    check_root
    install_docker
    install_docker_compose
    configure_firewall
    clone_project
    setup_environment
    deploy_services
    health_check
    show_deployment_info
}

# 执行主函数
main "$@"